// pages/profile/profile.ts
import { PAGE_LOGIN, PAGES, goToPage } from '../../config/pages';
import {checkLogin} from "../../libs/login";
import { setSignIntegral } from '../../api/user.js';
import userManager from '../../utils/userManager.js';
import { CUSTOMER_SERVICE_PHONE } from '../../config/app.js';

Page({
  data: {
    hasEnterprise: false, // 用户是否有企业信息
    userInfo: {
      uid: 0,
      name: '',
      nickname: '',
      company: '',
      avatar: '',           // 头像URL
      avatarType: 'text',   // 'image' 或 'text'
      avatarInitial: '',    // 首字母
      phone: '',
      integral: 0,
      now_money: 0,
      level: 0,
      is_promoter: 0
    },
    orderCount: {
      unpaid: 0,      // 待付款
      unshipped: 0,   // 待发货
      unreceived: 0,  // 待收货
      uncomment: 0,   // 待评价
      refunding: 0    // 退款中
    },
    checkinStatus: {
      checked: false,
      points: 0,
      totalPoints: 0
    },
    // 会员状态：用于控制会员区域显示
    showMembershipSection: true,  // 是否显示会员区域（非付费会员显示）
    collectCount: 0,  // 收藏数量
    couponCount: 0,   // 优惠券数量
    // 初始化完成标志
    initialized: false,
    quickActions: [
      { icon: 'fa-comment', text: '我的消息', badge: 0,url: PAGES.MESSAGES },
      { icon: 'fa-gift', text: '我的邀请', url: PAGES.INVITATIONS },
      { icon: 'fa-coins', text: '我的积分', url: PAGES.MY_POINTS },
      { icon: 'fa-shopping-bag', text: '积分商城', url: PAGES.POINTS_MALL }
    ],
    businessFunctions: [
      { icon: 'fa-cogs', text: '我的加工',  url: PAGES.MY_PROCESSING },
      { icon: 'fa-box', text: '我的材料', badge: 0, url: PAGES.MY_MATERIALS },
      { icon: 'fa-cube', text: '我的散料', badge: 0, url: PAGES.MY_BULK_MATERIALS },
      { icon: 'fa-users', text: '我的拼单', url: PAGES.MY_GROUP_ORDERS },
      { icon: 'fa-search', text: '我的求购', url: PAGES.MY_DEMAND_LIST },
      { icon: 'fa-handshake', text: '我的接单', url: PAGES.MY_ORDERS },
      { icon: 'fa-question-circle', text: '我的询价', url: PAGES.MY_INQUIRIES }
    ],
    basicFunctions: [
      { icon: 'fa-building', text: '我的企业', url: PAGES.MY_ENTERPRISE },
      { icon: 'fa-inbox', text: '我的留言', url: PAGES.MY_MESSAGES },
      { icon: 'fa-heart', text: '我的收藏', url: PAGES.COLLECTIONS },
      { icon: 'fa-exchange-alt', text: '我的兑换', url: PAGES.MY_EXCHANGES },
      { icon: 'fa-user-cog', text: '账号管理', url: PAGES.ACCOUNT_MANAGEMENT },
      { icon: 'fa-question-circle', text: '使用说明', url: PAGES.HELP }
    ],
    serviceInfo: {
      title: '客服电话',
      phone: CUSTOMER_SERVICE_PHONE,
      time: '工作时间 9:00-17:00',
      license: '营业执照：沪ICP备2025145963号-2X'
    }
  },

  async onLoad() {
    await this.checkLoginStatus();
  },

  async onShow() {
    // 更新TabBar选中状态
    if (typeof this.getTabBar === 'function' && this.getTabBar()) {
      this.getTabBar().setData({
        selected: 4  // 我的是第5个，索引为4
      });
    }
    
    // 只有在初始化完成后才刷新数据
    if (this.data.initialized) {
      // 只在需要时检查登录状态，避免重复检查
      // 如果已经登录，只更新用户信息
      if (checkLogin()) {
        this.loadUserInfo();
        this.loadUserEnterpriseStatus();
        this.updateMessageBadge();
      } else {
        goToPage(PAGE_LOGIN);
      }
    }
  },

  // 加载用户企业状态（从缓存的用户信息中获取）
  loadUserEnterpriseStatus() {
    const hasEnterprise = userManager.hasEnterprise();
    this.setData({
      hasEnterprise: hasEnterprise
    });
  },

  // 更新消息角标
  updateMessageBadge() {
    try {
      // 从缓存获取用户数据
      const userData = userManager.getUserInfoFromCache() as any;
      
      if (userData && userData.service_num !== undefined) {
        const serviceNum = userData.service_num || 0;
        console.log('[profile] updateMessageBadge - service_num:', serviceNum);
        this.setData({
          'quickActions[0].badge': serviceNum
        });
      } else {
        console.log('[profile] updateMessageBadge - 未获取到用户数据或service_num字段');
        // 如果缓存中没有数据，设置为0
        this.setData({
          'quickActions[0].badge': 0
        });
      }
    } catch (error) {
      console.error('[profile] updateMessageBadge - 更新消息角标失败:', error);
      // 出错时设置为0
      this.setData({
        'quickActions[0].badge': 0
      });
    }
  },

  // 检查登录状态
  async checkLoginStatus() {
    if (!checkLogin()) {
      // 未登录，跳转到登录页面
      goToPage(PAGE_LOGIN, {}, 'reLaunch');
      return;
    }
    
    // 登录检查完成，执行初始化操作
    this.setData({ initialized: true });
    
    // 加载用户信息（包含签到状态）和企业状态
    await this.loadUserInfo();
    this.loadUserEnterpriseStatus();
  },

  // 加载用户信息
  async loadUserInfo() {
    try {

      const userData = await userManager.getUserInfo(true, false) as any;
      
      if (userData) {
        // 获取头像或首字母
        const avatarData = userManager.getUserAvatarOrInitial() as any;
        
        // 更新用户基本信息
        this.setData({
          'userInfo.uid': userData.uid || 0,
          'userInfo.nickname': userData.nickname || '',
          'userInfo.name': userData.real_name || userData.nickname || '',
          'userInfo.phone': userData.phone || '',
          'userInfo.avatar': avatarData.type === 'image' ? avatarData.value : '',
          'userInfo.avatarType': avatarData.type,
          'userInfo.avatarInitial': avatarData.type === 'text' ? avatarData.value : '',
          'userInfo.integral': userData.integral || 0,
          'userInfo.now_money': userData.now_money || 0,
          'userInfo.level': userData.level || 0,
          'userInfo.is_promoter': userData.is_promoter || 0
        });
        
        // 根据 is_sign_today 字段更新签到状态
        // is_sign_today: 1=已签到, 0=未签到
        this.setData({
          'checkinStatus.checked': userData.is_sign_today === 1,
          'checkinStatus.totalPoints': userData.integral || 0
        });
        
        console.log('[profile] 签到状态已更新:', userData.is_sign_today === 1 ? '已签到' : '未签到');
        
        // 更新订单统计
        if (userData.orderStatusNum) {
          this.setData({
            'orderCount.unpaid': userData.orderStatusNum.unpaid_count || 0,
            'orderCount.unshipped': userData.orderStatusNum.unshipped_count || 0,
            'orderCount.unreceived': userData.orderStatusNum.received_count || 0,
            'orderCount.uncomment': userData.orderStatusNum.evaluated_count || 0,
            'orderCount.refunding': userData.orderStatusNum.refund_count || 0
          });
        }
        
        // 会员信息：使用 userManager.isPaidMember() 判断是否显示会员区域
        const isPaidMember = userManager.isPaidMember();
        
        // 只有非付费会员才显示会员注册区域
        this.setData({
          showMembershipSection: !isPaidMember
        });
        
        console.log('[profile] 是否付费会员:', isPaidMember, '显示会员区域:', !isPaidMember);
        
        // 更新收藏和优惠券数量
        if (userData.collectCount !== undefined) {
          this.setData({ collectCount: userData.collectCount });
        }
        if (userData.couponCount !== undefined) {
          this.setData({ couponCount: userData.couponCount });
        }
        
        // 更新消息角标（使用service_num字段）
        const serviceNum = (userData as any).service_num || 0;
        console.log('[profile] loadUserInfo - 更新消息角标, service_num:', serviceNum);
        this.setData({
          'quickActions[0].badge': serviceNum
        });
        
        // 更新企业信息
        if (userData.enterprise) {
          this.setData({
            hasEnterprise: true,
            'userInfo.company': userData.enterprise.company_name ||  userData.enterprise.name || ''
          });
        } else {
          this.setData({
            hasEnterprise: false
          });
        }
      }
    } catch (error) {
      console.error('加载用户信息失败:', error);
      
      wx.showToast({
        title: '加载失败，请稍后重试',
        icon: 'none'
      });
    }
  },

  // 检查签到状态（从用户信息中获取）
  checkCheckinStatus() {
    // 从 userManager 获取用户信息中的 is_sign_today 字段
    const userData = userManager.getUserInfoFromCache() as any;
    
    if (userData) {
      const isChecked = userData.is_sign_today === 1;
      this.setData({
        'checkinStatus.checked': isChecked,
        'checkinStatus.totalPoints': userData.integral || 0
      });
      console.log('[profile] checkCheckinStatus - 签到状态:', isChecked ? '已签到' : '未签到', 'is_sign_today:', userData.is_sign_today);
    } else {
      console.log('[profile] checkCheckinStatus - 未获取到用户数据');
    }
  },

  // 每日签到
  async dailyCheckin() {
    // 从 userManager 获取用户信息中的 is_sign_today 字段
    const userData = userManager.getUserInfoFromCache() as any;
    
    if (userData && userData.is_sign_today === 1) {
      wx.showToast({
        title: '您今天已经签到过了！',
        icon: 'none',
        duration: 2000
      });
      return;
    }
    
    try {
      wx.showLoading({ title: '签到中...' });
      
      // 调用签到接口
      const res = await setSignIntegral();
      
      wx.hideLoading();
      
      if (res.status === 200 && res.data) {
        const pointsEarned = res.data.integral || 0;
        const totalPoints = res.data.balance || 0;
        
        // 刷新用户信息缓存（重要：确保获取最新的 is_sign_today 和积分数据）
        await userManager.refreshAfterUpdate('签到');
        
        // 更新UI
        this.setData({
          'checkinStatus.checked': true,
          'checkinStatus.points': pointsEarned,
          'checkinStatus.totalPoints': totalPoints,
          'userInfo.integral': totalPoints
        });
        
        // 显示成功提示
        setTimeout(() => {
          wx.showModal({
            title: '签到成功！',
            content: `🎉 恭喜您获得 ${pointsEarned} 积分！`,
            showCancel: false,
            confirmText: '知道了'
          });
        }, 300);
      } else {
        throw new Error(res.msg || '签到失败');
      }
    } catch (error: any) {
      wx.hideLoading();
      console.error('签到失败:', error);

      const showToastTitle = typeof error === 'string' ? error : (error.msg || error.message || '签到失败，请稍后重试');

      wx.showToast({
        title: showToastTitle,
        icon: 'none',
        duration: 2000
      });
    }
  },

  // 联系客服
  contactService() {
    wx.makePhoneCall({
      phoneNumber: this.data.serviceInfo.phone
    });
  },

  // 跳转到页面
  navigateTo(e: any) {
    const url = e.currentTarget.dataset.url;
    if (url) {
      // 检查页面是否存在，如果不存在则显示提示
      const pages = [
        PAGES.PROFILE_DETAIL,
        PAGES.MESSAGES,
        PAGES.INVITATIONS,
        PAGES.MY_POINTS,
        PAGES.POINTS_MALL,
        PAGES.MEMBERSHIP,
        PAGES.MY_PROCESSING,
        PAGES.MY_MATERIALS,
        PAGES.MY_MATERIAL_DETAIL,
        PAGES.MY_BULK_MATERIALS,
        PAGES.MY_BULK_MATERIAL_DETAIL,
        PAGES.MY_GROUP_ORDERS,
        PAGES.MY_GROUP_DETAIL,
        PAGES.MY_DEMAND_LIST,
        PAGES.MY_DEMAND_DETAIL,
        PAGES.RECEIVED_ORDERS,
        PAGES.MY_INQUIRIES,
        PAGES.MY_ENTERPRISE,
        PAGES.MY_MESSAGES,
        PAGES.COLLECTIONS,
        PAGES.ACCOUNT_MANAGEMENT,
        PAGES.SETTINGS,
        PAGES.NOTIFICATIONS
      ];
      
      if (pages.includes(url)) {
        goToPage(url, {}, 'navigateTo', true);
      } else {
        wx.showToast({
          title: '页面开发中...',
          icon: 'none'
        });
      }
    }
  },

  // 头部操作按钮
  goToMessages() {
    goToPage(PAGES.MESSAGES);
  },

  goToSettings() {
    goToPage(PAGES.SETTINGS);
  },

  goToNotifications() {
    goToPage(PAGES.NOTIFICATIONS);
  },

  // 用户信息
  goToProfileDetail() {
    goToPage(PAGES.PROFILE_DETAIL);
  },

  // 快捷入口
  navigateToQuickAction(e: any) {
    const url = e.currentTarget.dataset.url;
    if (url) {
      goToPage(url);
    }
  },

  // 会员区域
  goToMembership() {
    goToPage(PAGES.MEMBERSHIP_REGISTER);
  },

  // 商机功能
  navigateToBusinessFunction(e: any) {
    const url = e.currentTarget.dataset.url;
    if (url) {
      goToPage(url);
    }
  },

  // 基础服务功能
  navigateToBasicFunction(e: any) {
    const url = e.currentTarget.dataset.url;
    if (url) {
      // 特殊处理：我的企业根据状态跳转
      if (url === PAGES.MY_ENTERPRISE) {
        this.goToEnterprise();
        return;
      }
      // 特殊处理：使用说明是公开页面，不需要登录检测
      if (url === PAGES.HELP) {
        goToPage(url, {}, 'navigateTo', true); // 跳过登录检测
        return;
      }
      goToPage(url);
    }
  },

  // 跳转到企业页面（根据状态判断）
  goToEnterprise() {
    const { hasEnterprise } = this.data;
    
    if (hasEnterprise) {
      // 有企业，跳转到我的企业页面
      console.log('用户已有企业，跳转到我的企业页面');
      goToPage(PAGES.MY_ENTERPRISE);
    } else {
      // 没有企业，跳转到创建企业页面
      console.log('用户没有企业，跳转到创建企业页面');
      goToPage(PAGES.CREATE_ENTERPRISE);
    }
  },

  // 显示更多选项
  showMoreOptions() {
    wx.showActionSheet({
      itemList: ['分享', '设置', '关于我们'],
      success: (res) => {
        console.log('选择了', res.tapIndex);
      }
    });
  },

  // 跳转到邀请分享页面
  goToInviteShare() {
    goToPage(PAGES.INVITE_SHARE);
  }
});
